package 算法题;

import java.util.ArrayList;

/**
 * Created by Administrator on 2017/8/13.
 */
public class 最小的K个数 {
    public static void main(String[] args) {
        int[] arr={4,5,1,6,2,7,3,8};
        int k=4;
        ArrayList<Integer> minK=getMinK(arr,k);
        System.out.println(minK.toString());
    }

    //使用冒泡排序思想
    private static ArrayList<Integer> getMinK(int[] arr, int k) {
        //排除异常情况
        if(arr.length<1||k<1||k>arr.length) return null;
        //正常情况
        ArrayList<Integer> integers = new ArrayList<>();
        for (int i = 0; i < k; i++) { //排序次数
            for (int j = 0; j < arr.length - 1 - i; j++) { //前后比较，每次将最小的放到最大索引处
                if(arr[j]<arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
            integers.add(arr[arr.length - 1 - i]);
        }
        return integers;
    }
}
